

#ifndef UC_GESPNT3D_H
#define UC_GESPNT3D_H

#include "zgecurv3d.h"
#include "zgekvec.h"
#include "zgept3dar.h"
#include "zgevec3d.h"
#include "zgepnt3d.h"
#include "zgept3dar.h"
#pragma pack (push, 8)

class UcGeKnotVector;

class
GE_DLLEXPIMPORT
UcGeSplineEnt3d : public UcGeCurve3d
{
public:

    ZSoft::Boolean    isRational            () const;
    int               degree                () const;
    int               order                 () const;
    int               numKnots              () const;
    const
    UcGeKnotVector&   knots                 () const;
    int               numControlPoints      () const;
    int               continuityAtKnot      (int idx, const UcGeTol& tol =
                                             UcGeContext::gTol ) const;

    double            startParam            () const;
    double            endParam              () const;
    UcGePoint3d       startPoint            () const;
    UcGePoint3d       endPoint              () const;

    ZSoft::Boolean    hasFitData            () const;

    double            knotAt                (int idx) const;
    UcGeSplineEnt3d&  setKnotAt             (int idx, double val);

    UcGePoint3d       controlPointAt        (int idx) const;
    UcGeSplineEnt3d&  setControlPointAt     (int idx, const UcGePoint3d& pnt);

    UcGeSplineEnt3d&  operator =            (const UcGeSplineEnt3d& spline);

protected:
    UcGeSplineEnt3d ();
    UcGeSplineEnt3d (const UcGeSplineEnt3d&);
};

#pragma pack (pop)
#endif

